package com.hb.config;

import com.hb.model.MagicBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JavaConfigClass {
    @Bean
    // 利用 Spring4 引入的 @Conditional 注解实现条件化创建 bean。如果给定条件计算结果为 true，就会创建这个 bean，否则的话，这个 bean 会被忽略。
    // 其中 @Conditional 注解中传入的 MagicExistsCondition 类就是条件。设置给 @Conditional 的类可以是任意实现了 Condition 接口的实现类。
    // 如果实现的 matches() 方法返回 true，那么就会创建带有 @Conditional 注解的bean，如果 matches() 方法返回 false，将不会创建这些 bean。
    // Spring4 开始 @Profile 注解进行了重构，使其基于 @Conditional 注解和 Condition 实现。
    @Conditional(MagicExistsCondition.class)
    public MagicBean magicBean() {
        return new MagicBean();
    }
}
